package com.ahstu.learning.friend;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import java.util.List;

public class ExpandAdapter extends BaseExpandableListAdapter {

	private Context context;
	private LayoutInflater mInflater = null;
	private List<List<String>> childrenData;// 定义组中的子数据*/
	int[] images;
	String[] groupDate;

	// 适配器
	public ExpandAdapter(Context context, int[] images, String[] groupDate, List<List<String>> childrenData) {
		this.context = context;
		this.images = images;
		this.groupDate = groupDate;
		this.childrenData = childrenData;

	}

	/* 组元素表示可折叠的列表项，子元素表示列表项展开后看到的多个子元素项 */

	/**
	 * 得到groupDate和childrenDate中每一个元素的ID
	 */

/*	获取组在给定的位置编号，即groupDate中元素的ID*/
	@Override
	public long getGroupId(int groupPosition) {
		return groupPosition;
	}

	/*	 获取在给定的组的儿童的ID，就是childrenDate中元素的ID*/
	@Override
	public long getChildId(int groupPosition, int childPosition) {
		return childPosition;
	}

	/**
	 *根据上面得到的ID的值，来得到groupDate和childrenDate中元素的个数 
	 */

	/*获取的群体数量，得到groupDate里元素的个数*/
	@Override
	public int getGroupCount() {
		return groupDate.length;
	}

	/* 取得指定组中的儿童人数，就是groupDate中每一个小组的个数*/
	@Override
	public int getChildrenCount(int groupPosition) {
		return childrenData.get(groupPosition).size();
	}

	/**
	 *利用上面getGroupId得到ID，从而根据ID得到armTypes中的数据，并填到TextView中 
	 */

	/* 获取与给定的组相关的数据，得到数组groupDate中元素的数据*/
	@Override
	public Object getGroup(int groupPosition) {
		return groupDate[groupPosition];
	}

	/* 获取一个视图显示给定组，存放groupDate*/
	@Override
	public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
		TextView textView = getTextViewGroup();// 调用定义的getTextView()方法
		textView.setText(getGroup(groupPosition).toString());// 添加数据
		return textView;
	}

	/**
	 * 利用上面getChildId得到ID，从而根据ID得到childrenDate中的数据，并填到TextView中
	 */

	// 获取与孩子在给定的组相关的数据,得到数组childrenDate中元素的数据
	@Override
	public Object getChild(int groupPosition, int childPosition) {
		return childrenData.get(groupPosition).get(childPosition);
	}
	// 获取一个视图显示在给定的组 的儿童的数据，就是存放childrenDate

	@Override
	public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView,
							 ViewGroup parent) {
		LinearLayout ll = new LinearLayout(context);
//		ll.setOrientation(0);// 定义为纵向排列
		ImageView logo = new ImageView(context);
		logo.setAdjustViewBounds(true);
		logo.setMaxWidth(150);
		logo.setMaxHeight(150);
		logo.setImageResource(images[groupPosition]);// 添加图片
		logo.setPadding(20, 20, 0, 20);
		ll.addView(logo);
		TextView textView = getTextViewChild();// 调用定义的getTextView()方法
		textView.setText(getChild(groupPosition, childPosition).toString());// 添加数据
		ll.addView(textView);
		return ll;
	}

	/**
	 * 自定义一个设定TextView属性的方法
	 */
	// 定义一个父TextView
	private TextView getTextViewGroup() {
		AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
		TextView textView = new TextView(context);
		textView.setLayoutParams(lp);
		textView.setPadding(100, 15, 0, 15);
		textView.setTextSize(20);
		return textView;
		// textView.setText(content);
	}


	// 定义一个子TextView
	private TextView getTextViewChild() {
		AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
		TextView textView = new TextView(context);
		textView.setLayoutParams(lp);
		textView.setPadding(20, 30, 0, 0);
		textView.setTextSize(20);
		return textView;
	}

	/**
	 * 其他设置
	 *
	 */

	// 孩子在指定的位置是可选的，即：childrenDate中的元素是可点击的
	@Override
	public boolean isChildSelectable(int groupPosition, int childPosition) {
		return true;
	}

	// 表示孩子是否和组ID是跨基础数据的更改稳定
	public boolean hasStableIds() {
		return true;
	}

}
